Please cite this using
Zhang, Z., McArdle, J. J., Wang, L., & Hamagami, F. (2008). A SAS interface for Bayesian analysis with WinBUGS. Structural Equation Modeling, 15(4), 705?C728.
TITLE 'Run WinBUGS from SAS: A Multiple Regression Example';
TITLE2 'Generate the Data';
DATA Sim_Reg;
b0=1; b1=2; b2=3; sig_e=2; seed=20060118; N = 1000;
DO _N_ = 1 TO N;
x1=RANNOR(seed);
x2=RANNOR(seed);
e=RANNOR(seed);
y = b0+b1*x1+b2*x2+sig_e*e;
KEEP y x1 x2;
OUTPUT;
END;
RUN;
PROC REG data=Sim_Reg;
MODEL y=x1 x2;
RUN;
FILENAME model "c:\RegModel.txt";
DATA model;
INPUT model \$80.;
CARDS;/*start the model*/
model{
#Model specification
for (i in 1:N) {
y[i]~dnorm(muy[i], Inv_sig2_e)
muy[i]<-b0+b1*x1[i]+b2*x2[i]
}
#priors
b0~dnorm(0, 1.0E-6)
b1~dnorm(0, 1.0E-6)
b2~dnorm(0, 1.0E-6)
Inv_sig2_e~dgamma(1.0E-3, 1.0E-3)
#parameter transformation
Sig2_e<-1/Inv_sig2_e
}
;
RUN;
DATA _NULL_;
SET model;
FILE model;
PUT model;
RUN;
%_lexport(data=Sim_Reg, file='c:\RegData.txt',
var=y x1 x2);
/*Create the initial values*/
DATA _NULL_;
FILE "c:\RegInit.txt";
PUT "list(b0=0, b1=0, b2=0, Inv_sig2_e=1)";
RUN;
/*Create a script file that includes the command to be used in WinBUGS*/
DATA _NULL_;
FILE "C:\Programs\WinBUGS14\BatchReg.txt";
PUT // @@
#1 "display('log')"
#2 "check('c:/RegModel.txt')"
#3 "data('c:/RegData.txt')"
#4 "compile(1)"
#5 "inits(1, 'c:/RegInit.txt')"
#6 "gen.inits()"
#7 "update(2000)"
#8 "set(b0)"
#9 "set(b1)"
#10 "set(b2)"
#11 "set(Sig2_e)"
#12 "dic.set()"
#13 "update(5000)"
#14 "dic.stats()"
#15 "coda(*,'c:/output')"
#16 "save('c:/bugslog.txt')"
#17 "quit()"
;
RUN;
DATA _NULL_;
FILE "c:\run.bat";
PUT 'CD C:\programs\WinBUGS14';
PUT 'WinBUGS14.exe /PAR BatchReg.txt';
PUT 'exit';
RUN;
DATA _NULL_;
X "c:\run.bat";
RUN;
QUIT;
/*Read in the log file to view the DIC*/
DATA log;
INFILE "c:\bugslog.txt" TRUNCOVER ;
INPUT log \$80.;
log=translate(log," ","09"x);
RUN;
PROC PRINT DATA=log;
RUN;
%coda2sas(out=post1, infile='c:\outputIndex.txt',
chain='c:\output1.txt', stats=1);
QUIT;